home *** CD-ROM | disk | FTP | other *** search
/ Pascal Super Library / Pascal Super Library (CW International)(1997).bin / LIBRARY / PAS_0693 / PRIMES.PAS < prev    next >
Pascal/Delphi Source File  |  1993-06-30  |  2KB  |  36 lines

  1. {─ Fido Pascal Conference ────────────────────────────────────────────── PASCAL ─
  2. Msg  : 351 of 355                                                               
  3. From : Janos Szamosfalvi                   1:343/45.0           06 Jun 93  19:30 
  4. To   : Gary Morris                                                               
  5. Subj : Prime numbers...                                                       
  6. ────────────────────────────────────────────────────────────────────────────────
  7. |When fooling  around in BASIC, I was able to write a |small program to extract
  8. prime numbers,  .... |it took about 20 mins. on my 386/40 to get prime numbers 
  9. |through  20000. I tried to come up with code to do the same |with Turbo but it
  10. continues  to elude me. Could anybody explain |how to write such a routine in
  11. Pascal?}
  12.  
  13. { the following routine uses a brute force approach with some
  14.  optimization; it took less than 3 minutes with a 286/12 to find
  15.  and print all primes up to 32768, about 50 seconds w/o printing
  16.  them; it becomes a bit slow when you get into a 6 digit range}
  17.  
  18. PROGRAM Primes;
  19. VAR
  20.    number, max_div, divisor : INTEGER;
  21.    prime : BOOLEAN;
  22. BEGIN
  23.    writeln('Primes:');
  24.    writeln('2');
  25.    FOR number := 2 TO MAXINT DO BEGIN
  26.       max_div := Round(sqrt(number) + 0.5);
  27.       prime := number MOD 2 <> 0;
  28.       divisor := 3;
  29.       WHILE prime AND (divisor < max_div) DO BEGIN
  30.          prime := number MOD divisor <> 0;
  31.          divisor := divisor + 2;
  32.       END;
  33.       IF prime THEN
  34.          writeln(number);
  35.    END;
  36. END.